//
//  @ Project : tp1-algo3
//  @ File Name : Neumatico.java
//  @ Date : 04/05/2008
//  @ Author : Claudia, Jorge, Luciana, Luciano
//
package modelo.auto;



public class KitNeumatico extends Componente {

	private static final long serialVersionUID = 1L;
	// Constantes
	public static final double DEFAULT_PESO = 120.0; 	// Peso por default de un kit de nuematicos.
	public static final double DEFAULT_AGARRE = 6.0; 	// Agarre por default.
	public static final double FACT_ACEL_DEFAULT = 1.0;
	public static final double FACT_VELL_DEFAULT = 1.0;
	
	// Propiedades fisicas
	private double agarre;
	private double friccion;
	
	/**
	 * Constructor
	 * @param descripcion
	 * @param tipo
	 * @param costo
	 * @param peso
	 * @param factVel
	 * @param factAcel
	 * @param vidaUtil
	 * @param agarre
	 */
	public KitNeumatico(String descripcion, String tipo, double costo, double peso, double factVel, double factAcel, double vidaUtil, double agarre) {
		super();
		
		this.setDescripcion(descripcion);
		this.setTipo(tipo.toUpperCase());
		this.setPrecio(costo);
		this.setPeso(peso);
		this.setFactorVelocidad(factVel);
		this.setFactorAceleracion(factAcel);
		this.setVidaUtil(vidaUtil);
		this.agarre = agarre;
		
	}
	
	
	/**
	 * Constructor
	 */
	public KitNeumatico() {
		super();
		
		this.setDescripcion("Neumaticos por default");
		this.setTipo("Neumaticos");
		this.setPrecio(30);
		this.setPeso(DEFAULT_PESO);
		this.agarre = DEFAULT_AGARRE;
		this.setFactorAceleracion(FACT_ACEL_DEFAULT);
		this.setFactorVelocidad(FACT_VELL_DEFAULT);
		
	}
	
	/**
	 * Calcula la fricci�n del neum�tico con un determinado rozamiento del suelo
	*/
	private void calcularFriccion(double roz) {
		double fricc;
		fricc = this.agarre + roz;
		this.friccion = fricc;
	}
	
	/**
	 * Determina los factores aceleraci�n y velocidad de acuerdo a la fricci�n con el suelo
	*/
	
	public void setRozamiento(double roz){
		//factor entre 0.95 y 1.05
		//double factorv = this.getFactorVelocidad();
		double factora = this.getFactorAceleracion();
	
		calcularFriccion(roz);
		
		if (this.agarre <= roz)
		{
			//factorv += (factorv*(this.friccion /100));
			factora += (factora*(this.friccion/100)/100);
		}
		else 
		{
			//factorv -= factorv*(this.friccion /10);
			factora -= (factora*(this.friccion/10)/100);
		}
		
		//this.setFactorVelocidad (factorv);
		this.setFactorAceleracion (factora);
	}
	
}
